#ifndef __XML_PARSER
#define __XML_PARSER
#include <cstdio>
#include <iostream>
#include <vector>
#include <list>
#include "XmlUtils.h"
#include "XmlData.h"
#include "XmlBasicStream.h"

namespace xml
{
	class XmlInputStream : XmlBasicStream
	{
	public:
		std::vector<xml::XmlUtils::_xmlToken> tokens;
		XmlInputStream(const char *);
		~XmlInputStream();
		XmlInputStream operator>>(XmlData &);
	private:
		xml::XmlNode *root;
		void build_xml_data();
		xml::XmlNode *build_xml_node();
		void build_xml_content();
		std::list<char *> stack;
		std::FILE *inputFile;
	};
}


#endif